1. Technical Field
The present teaching relates to methods, systems, and programming for distributed computing. Particularly, the present teaching is directed to methods, systems, and programming for deploying a plurality of distributed application stacks on a target machine.
2. Discussion of Technical Background
Distributed computing is a field of computer science that studies distributed systems, which include multiple autonomous computers or parallel virtual machines that communicate through a computer network, such as a computer cluster having multiple nodes. The machines in a distributed system interact with each other in order to achieve a common goal. A computer program that runs in the distributed system is called a distributed application. In distributed computing, a problem is divided into many tasks, each of which is solved by one or more computers, such as the nodes of a computer cluster. Distributed systems and applications may be applied as various paradigms, including grid computing, utility computing, edge computing, and cloud computing by which users may access the server resources using a computer, netbook, tablet, smart phone, or other device through the Internet.
For instance, APACHE HADOOP is a software framework that supports data-intensive distributed applications under a free license. It enables applications to work with thousands of nodes and petabytes of data. Rather than rely on hardware to deliver high-availability, HADOOP is designed to detect and handle failures at the application layer, thereby delivering a highly-available service. HADOOP is deployed on a computer cluster in the form of a HADOOP stack, which includes a set of software artifacts (HADOOP components), such as HADOOP software, configuration files, libraries, links, source code, documentations, miscellaneous, etc. The deployment of HADOOP on a cluster of machines usually involves hardware installation, operating system installation, update, and configuration, JAVA installation and configuration, and HADOOP stack installation, configuration, and diagnostic.
When deploying a distributed application stack, such as HADOOP, server-side software artifacts of the distributed application stack need to be deployed on regular nodes of the cluster while certain client-side software artifacts need to be installed and configured on one or more special target machines (e.g., lightweight HADOOP clients) from which a user has access to the cluster and the deployed distributed application stack. The target machines include, for example, the users' client-side machines outside the cluster and some special nodes, such as a gateway node, of the cluster. Moreover, certain applications on the clusters, e.g., development and Quality Engineering (QE), may require deploying multiple (e.g., tens or hundreds of) distributed application stacks on the same physical target machine and isolating the deployed distributed application stacks from each other on the target machine. Therefore, there is a need to provide a solution for automated deployment of multiple independent distributed application stacks in isolated environments on a target machine, such that a user can access and interact with multiple clusters through the target machine.